import axios from 'axios';  
import { showFailToast } from 'vant';
import { useRouter } from 'vue-router';

const api = axios.create({
    baseURL: 'http://127.0.0.1:8000',
    timeout: 10000
});


// 请求拦截器
api.interceptors.request.use(
    config => {
        // 从localStorage获取Token
        const token = localStorage.getItem('token');
        console.log('token', token)

        // 如果Token存在，则在请求头中添加Authorization字段
        if (token) {
            config.headers['Authorization'] = `Bearer ${token}`;
        };
        console.log(config)
        return config;
        
    },
    error => {
        console.log(error)
        return Promise.reject(error)
    }
);

// 响应拦截器
api.interceptors.response.use(
    response => {
        // 只处理成功响应，保持原始结构
        return response;
    },

    error => {
        console.log('err' + error);
        const { response } = error;

        if (!response) {
            // 网络错误（如断网、超时）
            showFailToast('网络连接失败，请检查网络设置');
            return Promise.reject(error);
        }

        const { data } = response;

        if (data.code === 401) {
            // 清除 Token 并重定向到登录页
            localStorage.removeItem('token');
            showFailToast('请先登录');

            // 使用 setTimeout 避免在非组件环境调用 useRouter
            setTimeout(() => {
                const router = useRouter();
                router.push('/login');
            }, 0);
        } else {
            // 其他错误码统一提示
            showFailToast('请求出错');
        }

        return Promise.reject(error);
    }
);
/**
 * 记录用户浏览商品
 * @param {number} userId 
 * @param {number} productId 
 */
export const recordBrowse = async (userId, productId) => {
    const res = await api.post(`/api/history/${userId}/${productId}`);
    return res.data;
};

/**
 * 获取用户浏览记录列表
 * @param {number} userId - 用户ID
 * @returns 浏览记录列表
 */
export const getBrowseHistory = async (userId) => {
    const res = await api.get(`/api/history/${userId}`);
    return res.data;
};
// 记录购买历史
export const recordPurchase = (user_id, product_id, order_id) => {
    return api.post(`/api/purchase/${user_id}/${product_id}/${order_id}`);
};
// 获取订单历史
export const getOrderHistory = (order_id) => {
    return api.get(`/api/order/${order_id}/history`);
};


export default api;

